diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-02-24 15:05:20 -0500 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-02-24 15:05:20 -0500 |
| commit | 8cdc6a686644fbf9de6e91ae622f47e23bf7bb23 (patch) | |
| tree | 746d9830fb11522d9435be9aecc428e95fcfdb61 /ui/routes/(app)/ch/[channel]/+page.svelte | |
| parent | 099471c574f6dceeb45f8bb5dae1699a734cb084 (diff) | |
| parent | f2c415dd7eb1cb68e18e96dfd70460f8972ee9df (diff) | |
Merge branch 'prop/preserve-state'
Diffstat (limited to 'ui/routes/(app)/ch/[channel]/+page.svelte')
| -rw-r--r-- | ui/routes/(app)/ch/[channel]/+page.svelte | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/ui/routes/(app)/ch/[channel]/+page.svelte b/ui/routes/(app)/ch/[channel]/+page.svelte index 8de9859..095e66a 100644 --- a/ui/routes/(app)/ch/[channel]/+page.svelte +++ b/ui/routes/(app)/ch/[channel]/+page.svelte @@ -3,7 +3,7 @@ import { page } from '$app/state'; import ActiveChannel from '$lib/components/ActiveChannel.svelte'; import MessageInput from '$lib/components/MessageInput.svelte'; - import { channelsList, currentUser, logins, messages } from '$lib/store'; + import { channelsList, channelsMetaList, currentUser, logins, messages } from '$lib/store'; import * as api from '$lib/apiServer'; let channel = $derived(page.params.channel); @@ -34,27 +34,22 @@ } function getLastVisibleMessage() { - const parentElement = activeChannel; - const childElements = parentElement.getElementsByClassName('message'); - const lastInView = Array.from(childElements) - .reverse() - .find((el) => { - return inView(parentElement, el); - }); - return lastInView; + if (activeChannel) { + const childElements = activeChannel.getElementsByClassName('message'); + const lastInView = Array.from(childElements) + .reverse() + .find((el) => { + return inView(activeChannel, el); + }); + return lastInView; + } } function setLastRead() { - const channelObject = $channelsList.getChannel(channel); const lastInView = getLastVisibleMessage(); - if (!channelObject || !lastInView) { - return; - } - const at = DateTime.fromISO(lastInView.dataset.at); - // Do it this way, rather than with Math.max tricks, to avoid assignment - // when we don't need it, to minimize reactive changes: - if (at > channelObject.lastReadAt) { - channelObject.lastReadAt = at; + if (lastInView) { + const at = DateTime.fromISO(lastInView.dataset.at); + $channelsMetaList.updateLastReadAt(channel, at); } } |
